Submission #2414551
Source Code Expand
#include<stdio.h>
#include<stdlib.h>
int R=1,C=1,H[2000010],N[2000010];
//評価関数(いまはMin)
int hyouka(int a,int b){
if(C<b)return 1;
if(C<a||b==0)return 0;
return N[H[a]]<N[H[b]]?1:0;
}
//挿入関数
void hin(int a){
int i=C++;
for(N[H[0]=R]=a;hyouka(0,i/2);i/=2)H[i]=H[i/2];
H[i]=R++;
}
//取り出す関数
int hout(){
int rt=H[1],i,j=2,k=H[--C];
for(i=1;hyouka(i,C);i=j)H[i]=H[j=i*2+1-hyouka(i*2,i*2+1)];
H[j/2]=k;
return rt;
}
int main(){
int n,i,a,b=0,M=1e9+7;
long long s=1,c=1,d[100010]={1,1};
for(i=1;i<=100000;i++)d[i]=(d[i-1]*i)%M;
scanf("%d",&n);
for(i=0;i<n*2;i++){
scanf("%d",&a);
hin(a);
}
for(i=0;i<n*2;i++){
a=hout();
//printf("%d %d %d\n",a,N[a],b);
if(a<=n){
if(b<0)s=(s*abs(b))%M;
b++;
}
else{
if(b>0)s=(s*abs(b))%M;
b--;
}
//(a=hout())<=n?(b++):(b--);//printf("%d\n",b);
// if(b&&a>n)s=(s*abs(b))%M;
}
printf("%lld\n",s);
return 0;
}
Submission Info
Submission Time
2018-04-25 19:44:01+0900
Task
A - 1D Matching
User
yuiop
Language
C (GCC 5.4.1)
Score
500
Code Size
1021 Byte
Status
AC
Exec Time
80 ms
Memory
4992 KB
Compile Error
./Main.c: In function ‘main’:
./Main.c:27:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.c:29:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&a);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
500 / 500
Status
Set Name
Test Cases
Sample
example0.txt, example1.txt
All
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, example0.txt, example1.txt
Case Name
Status
Exec Time
Memory
000.txt
AC
44 ms
4736 KB
001.txt
AC
13 ms
2432 KB
002.txt
AC
19 ms
2432 KB
003.txt
AC
22 ms
2432 KB
004.txt
AC
70 ms
4992 KB
005.txt
AC
79 ms
4992 KB
006.txt
AC
79 ms
4992 KB
007.txt
AC
79 ms
4992 KB
008.txt
AC
79 ms
4992 KB
009.txt
AC
80 ms
4992 KB
010.txt
AC
77 ms
4992 KB
011.txt
AC
79 ms
4992 KB
example0.txt
AC
1 ms
2176 KB
example1.txt
AC
1 ms
2176 KB