sa1378
جمعه 07 آذر 1393, 15:02 عصر
سلام
سوالی که براش کد زدم اینه:
contest/471/problem/B (http://codeforces.com/contest/471/problem/B)
اول اینکه میخوام بدونم الگوریتمم درسته اصلا
if(case==true)
چرا پس جوابش غلطه
if(case==false)
الگوریتم درست چیه؟
کد:#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define N 2001
#define ll long long
ll n,a[N],b[N],output[N];
vector <ll> v[N];
bool mark[N];
void find(int x)
{
for(int i=0;i<n;i++)
if(b[x]==a[i] && mark[i]==false)
v[x].push_back(i+1);
}
void dynamic(int x)
{
if(x==n)
{
for(int i=0;i<n;i++)
cout<<output[i]<<" ";
cout<<endl;
}
else
{
find(x);
for(int i=0;i<n;i++)
{
cerr<<v[x][i];
output[x]=v[x][i];
mark[v[x][i]]=true;
dynamic(x+1);
mark[v[x][i]]=false;
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
b[i]=a[i];
}
sort(b,b+n);
ll last=0,p=0,ans=1;
for(int i=0;i<n;i++)
{
if(last==0)
{
p++;
last=b[i];
}
else if(last==b[i])
p++;
else if(last!=b[i])
{
ans*=p;
p=1;
last=b[i];
}
}
if(p>1)
ans*=p;
if(ans<3)
{
cout<<"NO"<<endl;
return 0;
}
cout<<"YES"<<endl;
dynamic(0);
return 0;
}
سوالی که براش کد زدم اینه:
contest/471/problem/B (http://codeforces.com/contest/471/problem/B)
اول اینکه میخوام بدونم الگوریتمم درسته اصلا
if(case==true)
چرا پس جوابش غلطه
if(case==false)
الگوریتم درست چیه؟
کد:#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define N 2001
#define ll long long
ll n,a[N],b[N],output[N];
vector <ll> v[N];
bool mark[N];
void find(int x)
{
for(int i=0;i<n;i++)
if(b[x]==a[i] && mark[i]==false)
v[x].push_back(i+1);
}
void dynamic(int x)
{
if(x==n)
{
for(int i=0;i<n;i++)
cout<<output[i]<<" ";
cout<<endl;
}
else
{
find(x);
for(int i=0;i<n;i++)
{
cerr<<v[x][i];
output[x]=v[x][i];
mark[v[x][i]]=true;
dynamic(x+1);
mark[v[x][i]]=false;
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
b[i]=a[i];
}
sort(b,b+n);
ll last=0,p=0,ans=1;
for(int i=0;i<n;i++)
{
if(last==0)
{
p++;
last=b[i];
}
else if(last==b[i])
p++;
else if(last!=b[i])
{
ans*=p;
p=1;
last=b[i];
}
}
if(p>1)
ans*=p;
if(ans<3)
{
cout<<"NO"<<endl;
return 0;
}
cout<<"YES"<<endl;
dynamic(0);
return 0;
}