/* Enter your code here. Read input from STDIN. Print output to STDOUT */
#include <math.h>
#include <stdio.h>
#define READNUM 9
double one_twochar(char input2[READNUM]){
return(0.0);
}
double threechar(char input2[READNUM]){
if(input2[0]==input2[2]){
return(0.0);
}
else{
return(3.0);
}
}
double fourchar(char input2[READNUM]){
if(input2[0]==input2[3]){
return(0.0);
}
else{
return(3.0);
}
}
double five_aabbc(char input2[READNUM],char center){
char chartemp;
int i;
if(input2[2]==center){
return (15.6250);
}
else{
for(i=0;i<5;i+=1){
if(input2[i]==center){
input2[i]=input2[2];
input2[2]=center;
}
}
if((input2[0]==input2[4])&&(input2[1]==input2[3])){
return(19.375);
}
else{
return(20.9375);
}
}
}
double five_aaabb(char input2[READNUM],char center){
char chartemp;
int i;
if(input2[2]==center){
return (6.25);
}
else{
return (7.5);
}
}
double fivechar(char input2[READNUM]){
int i,j;
int num=5;
char inputtemp[6],chartemp;
if((input2[0]==input2[4])&&(input2[1]==input2[3])){
return(0.0);
}
else{
for(i=0;i<=num;i+=1){
inputtemp[i]=input2[i];
}
for(i=0;i<num-1;i+=1){
for(j=i+1;j<num;j+=1){
if(inputtemp[i]>inputtemp[j]){
chartemp=inputtemp[j];
inputtemp[j]=inputtemp[i];
inputtemp[i]=chartemp;
}
}
}
if((inputtemp[0]!=inputtemp[2])&&(inputtemp[2]!=inputtemp[4])){
if(inputtemp[0]!=inputtemp[1]){
chartemp=inputtemp[0];
}
else if (inputtemp[2]!=inputtemp[3]){
chartemp=inputtemp[2];
}
else{
chartemp=inputtemp[4];
}
return (five_aabbc(input2,chartemp));
}
else if(inputtemp[1]!=inputtemp[3]){
chartemp=inputtemp[2];
return (five_aaabb(input2,chartemp));
}
else{
chartemp=inputtemp[2];
return (10.0);
}
return(-2.0);
}
}
double sixchar(char input2[READNUM]){
int i,j;
int num=6;
char inputtemp[7],chartemp;
if((input2[0]==input2[5])&&(input2[1]==input2[4])){
return(0.0);
}
else{
for(i=0;i<=num;i+=1){
inputtemp[i]=input2[i];
}
for(i=0;i<num-1;i+=1){
for(j=i+1;j<num;j+=1){
if(inputtemp[i]>inputtemp[j]){
chartemp=inputtemp[j];
inputtemp[j]=inputtemp[i];
inputtemp[i]=chartemp;
}
}
}
if((inputtemp[0]!=inputtemp[2])&&(inputtemp[2]!=inputtemp[4])){
if ((input2[0]==input2[5])||(input2[1]==input2[4])||(input2[2]==input2[3])){
return(17.5);
}
else{
return(20.0);
}
}
else{
return (7.5);
}
return(-2.0);
}
}
double seven_aabbccd(char input2[READNUM],char center){
char chartemp,inputtemp[8];
int i;
if(input2[3]==center){
if((input2[0]==input2[6])||(input2[1]==input2[5])||(input2[2]==input2[4])){
return (117.1793);
}
else{
return (129.3674);
}
}
else{
for(i=0;i<8;i+=1){
inputtemp[i]=input2[i];
}
for(i=0;i<7;i+=1){
if(inputtemp[i]==center){
inputtemp[i]=inputtemp[3];
inputtemp[3]=center;
}
}
if((inputtemp[0]==inputtemp[6])&&(inputtemp[1]==inputtemp[5])&&(inputtemp[2]==inputtemp[4])){
return(129.6414);
}
else if((inputtemp[0]==inputtemp[6])||(inputtemp[1]==inputtemp[5])||(inputtemp[2]==inputtemp[4])){
if((input2[0]==input2[6])||(input2[1]==input2[5])||(input2[2]==input2[4])){
return(136.2614);
}
else{
return(136.9419);
}
}
else
{
return(138.0556);
}
}
}
double seven_aaabbcc(char input2[READNUM],char center){
char chartemp,inputtemp[8];
int i;
if(input2[3]==center){
if(((input2[0]==input2[6])&&(input2[0]==center))||((input2[1]==input2[5])&&(input2[1]==center))||((input2[2]==input2[4])&&(input2[2]==center))){
return (43.9268);
}
else if(((input2[0]==input2[6])&&(input2[0]!=center))||((input2[1]==input2[5])&&(input2[1]!=center))||((input2[2]==input2[4])&&(input2[2]!=center))){
return (43.4731);
}
else{
return (48.7319);
}
}
else{
for(i=0;i<8;i+=1){
inputtemp[i]=input2[i];
}
for(i=0;i<7;i+=1){
if((inputtemp[i]==center)&&(inputtemp[i]!=inputtemp[6-i])){
inputtemp[i]=inputtemp[3];
inputtemp[3]=center;
}
}
if((inputtemp[0]==inputtemp[6])&&(inputtemp[1]==inputtemp[5])&&(inputtemp[2]==inputtemp[4])){
return(47.6271);
}
else if((input2[0]==input2[6])||(input2[1]==input2[5])||(input2[2]==input2[4])){
return(51.0299);
}
else{
return(51.2567);
}
}
}
double seven_aaaabbc(char input2[READNUM],char center,char four){
char chartemp,inputtemp[8];
int i,cposi;
if(input2[3]==center){
return (47.1852);
}
else if(input2[3]==four){
if(((input2[0]==input2[6])&&(input2[0]!=center)&&(input2[0]!=four))||((input2[1]==input2[5])&&(input2[1]!=center)&&(input2[1]!=four))
||((input2[2]==input2[4])&&(input2[2]!=center)&&(input2[2]!=four))){
return (55.9352);
}
else{
for(i=0;i<7;i+=1){
if(input2[i]==center){
cposi=i;
}
}
if(input2[6-cposi]==four){
return (59.5648);
}
else{
return (59.3380);
}
}
}
else{
for(i=0;i<8;i+=1){
inputtemp[i]=input2[i];
}
for(i=0;i<7;i+=1){
if(inputtemp[i]==center){
inputtemp[i]=inputtemp[3];
inputtemp[3]=center;
}
}
if((inputtemp[0]==inputtemp[6])&&(inputtemp[1]==inputtemp[5])&&(inputtemp[2]==inputtemp[4])){
return(56.3889);
}
else
{
return(59.3380);
}
}
}
double seven_aaaabbb(char input2[READNUM],char center){
char chartemp,inputtemp[8];
int i,cposi;
if(input2[3]==center){
return (17.6944);
}
else if(((input2[0]==input2[6])&&(input2[0]==center))||((input2[1]==input2[5])&&(input2[1]==center))||((input2[2]==input2[4])&&(input2[2]==center))){
return (20.6111);
}
else{
return (21.9722);
}
}
double seven_aaaaabb(char input2[READNUM],char center){
char chartemp,inputtemp[8];
int i,cposi;
if(input2[3]==center){
return (12.25);
}
else{
return (14.0);
}
}
double sevenchar(char input2[READNUM]){
int i,j;
int num=7;
char inputtemp[8],chartemp,chartemp2='0';
if((input2[0]==input2[6])&&(input2[1]==input2[5])&&(input2[2]==input2[4])){
return(0.0);
}
else{
for(i=0;i<=num;i+=1){
inputtemp[i]=input2[i];
}
for(i=0;i<num-1;i+=1){
for(j=i+1;j<num;j+=1){
if(inputtemp[i]>inputtemp[j]){
chartemp=inputtemp[j];
inputtemp[j]=inputtemp[i];
inputtemp[i]=chartemp;
}
}
}
if((inputtemp[0]!=inputtemp[2])&&(inputtemp[2]!=inputtemp[4])&&(inputtemp[4]!=inputtemp[6])){
if(inputtemp[0]!=inputtemp[1]){
chartemp=inputtemp[0];
}
else if (inputtemp[2]!=inputtemp[3]){
chartemp=inputtemp[2];
}
else if (inputtemp[4]!=inputtemp[5]){
chartemp=inputtemp[4];
}
else{
chartemp=inputtemp[6];
}
return (seven_aabbccd(input2,chartemp));
}
else if((inputtemp[0]!=inputtemp[3])&&(inputtemp[3]!=inputtemp[6])){
if(inputtemp[0]==inputtemp[2]){
chartemp=inputtemp[0];
return (seven_aaabbcc(input2,chartemp));
}
else if (inputtemp[4]==inputtemp[6]){
chartemp=inputtemp[6];
return (seven_aaabbcc(input2,chartemp));
}
else if (inputtemp[1]==inputtemp[3]){
chartemp=inputtemp[0];
chartemp2=inputtemp[3];
return (seven_aaaabbc(input2,chartemp,chartemp2));
}
else if (inputtemp[3]==inputtemp[5]){
chartemp=inputtemp[6];
chartemp2=inputtemp[3];
return (seven_aaaabbc(input2,chartemp,chartemp2));
}
else{
chartemp=inputtemp[3];
return (seven_aaabbcc(input2,chartemp));
}
return (-4.0);
}
else if((inputtemp[0]==inputtemp[3])&&(inputtemp[3]!=inputtemp[4])&&(inputtemp[4]!=inputtemp[6])){
chartemp2=inputtemp[3];
if(inputtemp[4]==inputtemp[5]){
chartemp=inputtemp[6];
}
else{
chartemp=inputtemp[4];
}
return (seven_aaaabbc(input2,chartemp,chartemp2));
}
else if((inputtemp[6]==inputtemp[3])&&(inputtemp[3]!=inputtemp[2])&&(inputtemp[2]!=inputtemp[0])){
chartemp2=inputtemp[3];
if(inputtemp[2]==inputtemp[1]){
chartemp=inputtemp[0];
}
else{
chartemp=inputtemp[2];
}
return (seven_aaaabbc(input2,chartemp,chartemp2));
}
else if((inputtemp[0]==inputtemp[3])&&(inputtemp[3]!=inputtemp[4])&&(inputtemp[4]==inputtemp[6])){
chartemp=inputtemp[4];
return (seven_aaaabbb(input2,chartemp));
}
else if((inputtemp[0]==inputtemp[2])&&(inputtemp[2]!=inputtemp[3])&&(inputtemp[3]==inputtemp[6])){
chartemp=inputtemp[2];
return (seven_aaaabbb(input2,chartemp));
}
else if((inputtemp[0]==inputtemp[4])&&(inputtemp[4]!=inputtemp[5])&&(inputtemp[5]==inputtemp[6])){
chartemp=inputtemp[4];
return (seven_aaaaabb(input2,chartemp));
}
else if((inputtemp[0]==inputtemp[1])&&(inputtemp[1]!=inputtemp[2])&&(inputtemp[2]==inputtemp[6])){
chartemp=inputtemp[2];
return (seven_aaaaabb(input2,chartemp));
}
else if((inputtemp[0]==inputtemp[5])||(inputtemp[1]==inputtemp[6])){
return (21.0);
}
return(-2.0);
}
}
double eight_aabbccdd(char input2[READNUM]){
char chartemp,inputtemp[8];
int i,count;
count=0;
for(i=0;i<=3;i+=1){
if(input2[i]==input2[7-i]){
count=count+1;
}
}
if(count==2){
return(121.3333);
}
else if (count==1){
return(131.7436);
}
else{
for(i=1;i<=6;i+=1){
if(input2[i]==input2[0]){
count=i;
}
}
if(input2[7-count]==input2[7]){
return(133.3590);
}
else{
return(134.6154);
}
}
}
double eight_aaaabbcc(char input2[READNUM],char four){
char chartemp,inputtemp[8];
int i,count,count2;
count=0;count2=0;
for(i=0;i<=3;i+=1){
if(input2[i]==input2[7-i]){
count=count+1;
if(input2[i]==four){
count2=count2+1;
}
}
}
if((count==2)&&(count2==2)){
return(48.4615);
}
else if ((count==2)&&(count2==1)){
return(47.3846);
}
else if (count==1){
return(52.7692);
}
else{
return(53.3077);
}
}
double eight_aaaabbbb(char input2[READNUM]){
char chartemp,inputtemp[8];
int i,count,count2;
count=0;count2;
for(i=0;i<=3;i+=1){
if(input2[i]==input2[7-i]){
count=count+1;
}
}
if(count==0){
return(21.0);
}
else{
return(18.6667);
}
}
double eightchar(char input2[READNUM]){
int i,j,count,count2;
int num=8;
char inputtemp[9],chartemp;
if((input2[0]==input2[7])&&(input2[1]==input2[6])&&(input2[2]==input2[5])){
return(0.0);
}
else{
for(i=0;i<=num;i+=1){
inputtemp[i]=input2[i];
}
for(i=0;i<num-1;i+=1){
for(j=i+1;j<num;j+=1){
if(inputtemp[i]>inputtemp[j]){
chartemp=inputtemp[j];
inputtemp[j]=inputtemp[i];
inputtemp[i]=chartemp;
}
}
}
if((inputtemp[0]!=inputtemp[2])&&(inputtemp[2]!=inputtemp[4])&&(inputtemp[4]!=inputtemp[6])){
return (eight_aabbccdd(input2));
}
else{
count=0;
if((inputtemp[0]!=inputtemp[2])&&(inputtemp[2]!=inputtemp[4])){
count=1;
chartemp=inputtemp[4];
}
if((inputtemp[0]!=inputtemp[2])&&(inputtemp[4]!=inputtemp[6])){
count=1;
chartemp=inputtemp[2];
}
if((inputtemp[2]!=inputtemp[4])&&(inputtemp[4]!=inputtemp[6])){
count=1;
chartemp=inputtemp[0];
}
if(count==1){
return (eight_aaaabbcc(input2,chartemp));
}
else if(inputtemp[2]!=inputtemp[4]){
return(eight_aaaabbbb(input2));
}
else{
return(14.0);
}
}
}
return(-2.0);
}
main(){
int i,j,n;
int length;
double answer;
char input[READNUM];
char filename[100];
// FILE *fp;
// sprintf(filename,"input01.txt");
// fp=fopen(filename,"r");
// fscanf(fp,"%d", &n);
scanf("%d", &n);
for(i=0;i<n;i+=1){
answer=-1.0;
scanf("%s", input);
// fscanf(fp,"%s", input);
length=0;
for(j=8;j>=1;j-=1){
if(input[j]=='\0'){
length=j;
}
}
if(length<=2){
answer=one_twochar(input);
}
else if(length==3){
answer=threechar(input);
}
else if(length==4){
answer=fourchar(input);
}
else if(length==5){
answer=fivechar(input);
}
else if(length==6){
answer=sixchar(input);
}
else if(length==7){
answer=sevenchar(input);
}
else if(length==8){
answer=eightchar(input);
}
printf("%.4f\n",answer);
}
// fclose(fp);
}
==============================================================
IN scala
import java.util.Scanner
/**
* Created by hama_du on 2014/03/21.
*/
object Solution extends App {
class Node(value: Int, left: Option[Node], right: Option[Node], depth: Int) {
var swapped = true
def swap(d: Int) {
if (depth % d == 0) {
swapped = !swapped
}
left map { l =>
l.swap(d)
}
right map { r =>
r.swap(d)
}
}
def apply(v: Int, p: (Int, Int)): Node = {
if (v == value) {
new Node(value, Node.buildNode(p._1, depth+1), Node.buildNode(p._2, depth+1), depth)
} else {
val newLeft = left map { l =>
l.apply(v, p)
}
val newRight = right map { r =>
r.apply(v, p)
}
new Node(value, newLeft, newRight, depth)
}
}
def traverse(): String = {
val leftT = left match {
case Some(n) => n.traverse()
case None => ""
}
val rightT = right match {
case Some(n) => n.traverse()
case None => ""
}
if (swapped) {
(leftT + " " + value + " " + rightT).trim
} else {
(rightT + " " + value + " " + leftT).trim
}
}
}
object Node {
def emptyNode(value: Int, depth: Int): Node = {
new Node(value, None, None, depth)
}
def buildNode(v: Int, d: Int): Option[Node] = {
if (v == -1) {
None
} else {
Some(emptyNode(v, d))
}
}
}
val in = new Scanner(System.in)
val N = in.nextInt()
val rootNode = (1 to N).foldLeft(Node.emptyNode(1, 1))((node, idx) => {
val a,b = in.nextInt()
val pair = (a,b)
node.apply(idx, pair)
})
val K = in.nextInt()
(0 until K).foldLeft(rootNode)((node, _) => {
val idx = in.nextInt()
node.swap(idx)
println(node.traverse())
node
})
}
============================================
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
int *dc = calloc(n, sizeof(int));
int count = 0;
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x);
if (x < n) {
int start = (i+1)%n;
int end = (start-x+n)%n;
dc[start]++;
dc[end]--;
if (end <= start) count++;
}
}
int id = 0;
int val = 0;
for (int i = 0; i < n; i++) {
count += dc[i];
if (count > val) {
val = count;
id = i;
}
}
printf("%d", id+1);
free(dc);
return 0;
}
