WA的点提示Unexpected end of file - int32 expected 是什么玩意
答案明明是对的,但WA了。
样例1 in:
5 10
5 1 5 3 5
5 3
2 4
2 5
5 1
4 5
4 1
4 3
1 3
2 1
2 3
out
2 4 5 1 3
4 1 5 2 3
下面代码
#include<bits/stdc++.h>
using namespace std;
int m,n,l,r,s,cnt,ans,t;
int x[100000],tar[100000];
int a[100000],b[100000],c[100000];
bool f=0;
int calc() {
int sum=0;
for(int i=1; i<=n; i++) {
if(tar[i]>x[i])sum++;
}
for(int i=1; i<=m; i++) {
if(tar[a[i]]>tar[b[i]])sum++;
}
return sum;
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++)
cin>>x[i];
for(int i=1; i<=m; i++)
cin>>a[i]>>b[i];
for(int i=1; i<=n; i++)
tar[i]=i;
for(int i=1;i<=n;i++){
c[i]=89898989;
}
double T=8000;
srand(1423765);
int now=calc();
while(T>0.00001) {
int q1=rand()%n+1;
int q2=rand()%n+1;
swap(tar[q1],tar[q2]);
int sum=calc();
if(sum==0) {
if(!f) {
for(int i=1;i<=n;i++){
c[i]=898989898;
}
f=1;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(tar[j]==i) {
if(i!=n)
cout<<j<<' ';
else cout<<j;
break;
}
}
}
cout<<endl;
}
for(int i=1; i<=n; i++) {
c[i]=min(tar[i],c[i]);
}
} else if(sum<now) {
now=sum;
swap(tar[q1],tar[q2]);
if(!f) {
for(int i=1; i<=n; i++) {
c[i]=min(tar[i],c[i]);
}
}
} else if(exp((now-sum)/T)*10>rand()) {
now=sum;
} else {
swap(tar[q1],tar[q2]);
}
T*=0.9998;
}
for(int i=1; i<n; i++) {
cout<<c[i]<<' ';
}
cout<<c[n];
}