# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
132625 | parkky | 산만한 고양이 (KOI17_cat) | C++14 | 190 ms | 6392 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
#include<algorithm>
using namespace std;
int N,M,p[300001],imp[300001];
struct road{
int a,b;
}rd[600000];
int so(road x,road y){
return x.a<y.a||(x.a==y.a&&x.b<y.b);
}
int near(int x,int y){
return x-y==1||y-x==1||x-y==N-1||y-x==N-1;
}
long long solve3(){
int list[2]={};
for(int i=0;i<2*M;i++){
if(rd[i].a>rd[i].b)continue;
if(!near(rd[i].a,rd[i].b)){
if(list[0]==0)list[0]=rd[i].a,list[1]=rd[i].b;
else if(list[0]==rd[i].a||list[0]==rd[i].b)list[1]=-1;
else if(list[1]==rd[i].a||list[1]==rd[i].b)list[0]=list[1],list[1]=-1;
else list[0]=-1;
}
}
if(list[0]==-1)return 0;
if(list[1]==-1)return list[0];
if(list[0])return list[0]+list[1];
return N*(N+1)/2;
}
int main(){
scanf("%d%d",&N,&M);
for(int i=0;i<M;i++){
int x,y;
scanf("%d%d",&x,&y);
rd[2*i]={x,y};
rd[2*i+1]={y,x};
}
sort(rd,rd+2*M,so);
for(int i=0,j=0;i<2*M;i++){
if(rd[i].a>j)p[j++]=i;
}
p[N]=2*M;
printf("%lld",solve3());
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |